In typical microcontroller devices, reset schemes are implemented whereby the microcontroller device will be reset upon a particular event occurring. In more intelligent systems, such a reset scheme may be divided into separate levels of reset, such as a destructive reset level and one or more functional reset levels. In a functional reset case only certain elements of the microcontroller device are reset, whilst in a destructive reset case a complete reset of the entire microcontroller device is performed. Accordingly, such a functional reset may typically be applied in response to non-critical reset events, whilst a destructive reset may be applied in response to a critical reset event. The limitation with strict implementations of separate functional and destructive resets is that reset events defined as a functional type will always generate a functional reset. However, in some cases it may be preferred that such a functional type of reset event be escalated to the destructive type in order to force a full system reset.
An example of a non-critical reset event is a system software watchdog reset event, which is typically handled as a functional reset event. However, depending on the system design it is sometimes preferable that this reset source is escalated to a destructive reset. For example, if the cause of the watchdog reset event is not removed by the functional reset, repeated software watchdog reset events may occur, resulting in reset cycling, which is typically not considered a safe state. Accordingly, escalating the reset to a destructive type in the event of such reset cycling in order to force a full system reset enables the microcontroller device to be returned to a (presumed) safe state.